import java.io.Serializable;
//import java.util.HashMap;
import java.util.HashMap;
import java.util.Observable;


public class Periodique extends Observable implements Serializable{

	// ************************************************************************************************************
		// Constantes
		// ************************************************************************************************************

		private static final long serialVersionUID = 1L;

		// ************************************************************************************************************
		// Attributs
		// ************************************************************************************************************
		private String _ISSN;
		private String _Titre;
		private HashMap<String, Parution> _parutions;
		
		// ************************************************************************************************************
		// Constructeur
		// ************************************************************************************************************
		/**
		 * Constructeur.
		 * @param numero	num�ro du lecteur
		 * @param nom		nom du lecteur
		 * @param prenom	pr�nom du lecteur
		 * @param adresse	adresse du lecteur
		 * @param age		�ge du lecteur
		 */
		public Periodique(String ISSN, String Titre) {
			this.setISSN(ISSN) ;
			this.setTitre(Titre);
			this.setParutions(new HashMap<String, Parution>());

			
		} // Fin Constructeur
		
		// ************************************************************************************************************
		// M�thodes priv�es
		// ************************************************************************************************************

		// ------------------------------------------------------------------------------------------------------------
		// Affecteurs

		/**
		 * @param numero valeur � affecter comme num�ro du periodique
		 */
		private void setISSN(String ISSN) {
			_ISSN = ISSN;
		}

		/**
		 * @param nom valeur � affecter comme nom du periodique
		 */
		private void setTitre(String Titre) {
			_Titre = Titre;
		}


		public void setParutions(HashMap<String, Parution> parutions) {
			_parutions = parutions;
		}
		// ************************************************************************************************************
		// M�thodes publiques
		// ************************************************************************************************************
		
		// ------------------------------------------------------------------------------------------------------------
		// Accesseurs
		
		/**
		 * @return le ISSN du periodique
		 */
		public String getISSN() {
			return _ISSN;
		}

		/**
		 * @return le titre du periodique
		 */
		public String getTitre() {
			return _Titre;
		}
		
		private void lierParution(String reference, Parution parution) {
			_parutions.put(reference, parution);
		} // Fin lierExemplaire
		
		public Parution getParution(String ref) {
			return (Parution) _parutions.get(ref);
		} // Fin unExemplaire
		
		public HashMap<String,Parution> getParutions() {
			return _parutions;
		}
		
		public int getNbParutions() {
			return _parutions.size();
		}	
		
		public Parution ajouterParution(String ref, Parution parution) {
			
			// Creation de l'exemplaire
			//Parution parution = new Parution(ref, titre, this);
			
			// liaison de l'ouvrage a l'exemplaire
			this.lierParution(ref, parution);
			this.notifierObservateurs();
			return parution;
		}

		public void notifierObservateurs() {
			this.setChanged();
			this.notifyObservers();	
		}

		
	}


	
